#include "usart1_exti.h"
#include "usart1.h"

static handler_t g_h1;

void usart1_exti_init(void)
{
    NVIC_InitTypeDef nvic_value;


    /* 配置USART1接收中断 */
    USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);  // 启用接收中断

    /* 初始化NVIC */
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);   // 组优先 2bit 子优先 2bit

    nvic_value.NVIC_IRQChannel = USART1_IRQn;          // 中断号
    nvic_value.NVIC_IRQChannelCmd = ENABLE;
    nvic_value.NVIC_IRQChannelPreemptionPriority = 2;
    nvic_value.NVIC_IRQChannelSubPriority = 2;
    NVIC_Init(&nvic_value);

    /* 启动USART1 */
    USART_Cmd(USART1, ENABLE);
}

void USART1_IRQHandler(void)
{
    // 执行处理函数
    g_h1();
	// 清除接收中断标志
	USART_ClearITPendingBit(USART1, USART_IT_RXNE);
}


// 设置行为函数
void set_handlers(handler_t h1)
{
    g_h1 = h1;
}
